OBJECT Report 93 Create Fiscal Year
{
  OBJECT-PROPERTIES
  {
    Date=14/03/15;
    Time=07:38:04;
    Modified=Yes;
    Version List=NAVW17.10,4-4-5;
  }
  PROPERTIES
  {
    CaptionML=ENU=Create Fiscal Year;
    ProcessingOnly=Yes;
    OnPreReport=BEGIN
                  AccountingPeriod."Starting Date" := FiscalYearStartDate;
                  AccountingPeriod.TESTFIELD("Starting Date");

                  IF AccountingPeriod.FIND('-') THEN BEGIN
                    FirstPeriodStartDate := AccountingPeriod."Starting Date";
                    FirstPeriodLocked := AccountingPeriod."Date Locked";
                    IF (FiscalYearStartDate < FirstPeriodStartDate) AND FirstPeriodLocked THEN
                      IF NOT
                         CONFIRM(
                           Text000 +
                           Text001)
                      THEN
                        EXIT;
                    IF AccountingPeriod.FIND('+') THEN
                      LastPeriodStartDate := AccountingPeriod."Starting Date";
                  END ELSE
                    IF NOT
                       CONFIRM(
                         Text002 +
                         Text003)
                    THEN
                      EXIT;

                  FiscalYearStartDate2 := FiscalYearStartDate;

                  //4-4-5 Accounting >>
                  IF FourFourFive THEN BEGIN
                    Calendar.RESET;
                    Calendar.SETRANGE("Period Type",Calendar."Period Type"::Month);
                    Calendar.SETRANGE("Period Start",FiscalYearStartDate, 31129999D);
                    Calendar.FIND('-');
                  END;
                  //4-4-5 Accounting <<

                  FOR i := 1 TO NoOfPeriods + 1 DO BEGIN
                    IF (FiscalYearStartDate <= FirstPeriodStartDate) AND (i = NoOfPeriods + 1) THEN
                      EXIT;

                    IF FirstPeriodStartDate <> 0D THEN
                      IF (FiscalYearStartDate >= FirstPeriodStartDate) AND (FiscalYearStartDate < LastPeriodStartDate) THEN
                        ERROR(Text004);
                    AccountingPeriod.INIT;
                    AccountingPeriod."Starting Date" := FiscalYearStartDate;
                    AccountingPeriod.VALIDATE("Starting Date");
                    IF (i = 1) OR (i = NoOfPeriods + 1) THEN BEGIN
                      AccountingPeriod."New Fiscal Year" := TRUE;
                      InvtSetup.GET;
                      AccountingPeriod."Average Cost Calc. Type" := InvtSetup."Average Cost Calc. Type";
                      AccountingPeriod."Average Cost Period" := InvtSetup."Average Cost Period";
                    END;
                    IF (FirstPeriodStartDate = 0D) AND (i = 1) THEN
                      AccountingPeriod."Date Locked" := TRUE;
                    IF (AccountingPeriod."Starting Date" < FirstPeriodStartDate) AND FirstPeriodLocked THEN BEGIN
                      AccountingPeriod.Closed := TRUE;
                      AccountingPeriod."Date Locked" := TRUE;
                    END;

                    //4-4-5 Accounting >>
                    IF FourFourFive THEN BEGIN
                      AccountingPeriod.Name := Calendar."Period Name";
                      Calendar.NEXT;
                    END;
                    //4-4-5 Accounting >>

                    IF NOT AccountingPeriod.FIND('=') THEN
                      AccountingPeriod.INSERT;

                    //4-4-5 Accounting >>
                    IF FourFourFive THEN BEGIN
                      IF i MOD 3 <> 0 THEN
                        FiscalYearStartDate := CALCDATE('<4W>',FiscalYearStartDate)
                      ELSE
                        FiscalYearStartDate := CALCDATE('<5W>',FiscalYearStartDate);
                    END ELSE
                    //4-4-5 Accounting >>
                      FiscalYearStartDate := CALCDATE(PeriodLength,FiscalYearStartDate);
                  END;

                  AccountingPeriod.GET(FiscalYearStartDate2);
                  AccountingPeriod.UpdateAvgItems(0);
                END;

  }
  DATASET
  {
  }
  REQUESTPAGE
  {
    PROPERTIES
    {
      SaveValues=Yes;
      OnOpenPage=BEGIN
                   IF NoOfPeriods = 0 THEN BEGIN
                     NoOfPeriods := 12;
                     EVALUATE(PeriodLength,'<1M>');
                   END;
                   IF AccountingPeriod.FIND('+') THEN
                     FiscalYearStartDate := AccountingPeriod."Starting Date";
                 END;

    }
    CONTROLS
    {
      { 1900000001;0;Container;
                  ContainerType=ContentArea }

      { 1900000002;1;Group  ;
                  CaptionML=ENU=Options }

      { 1   ;2   ;Field     ;
                  Name=StartingDate;
                  CaptionML=ENU=Starting Date;
                  SourceExpr=FiscalYearStartDate }

      { 2   ;2   ;Field     ;
                  Name=NoOfPeriods;
                  CaptionML=ENU=No. of Periods;
                  SourceExpr=NoOfPeriods }

      { 3   ;2   ;Field     ;
                  Name=PeriodLength;
                  CaptionML=ENU=Period Length;
                  SourceExpr=PeriodLength }

      { 1000000000;2;Field  ;
                  Name=FourFourFive;
                  CaptionML=[ENU=Four Four Five;
                             ENG=Four Four Five];
                  SourceExpr=FourFourFive }

    }
  }
  LABELS
  {
  }
  CODE
  {
    VAR
      Text000@1000 : TextConst 'ENU=The new fiscal year begins before an existing fiscal year, so the new year will be closed automatically.\\';
      Text001@1001 : TextConst 'ENU=Do you want to create and close the fiscal year?';
      Text002@1002 : TextConst 'ENU=Once you create the new fiscal year you cannot change its starting date.\\';
      Text003@1003 : TextConst 'ENU=Do you want to create the fiscal year?';
      Text004@1004 : TextConst 'ENU=It is only possible to create new fiscal years before or after the existing ones.';
      AccountingPeriod@1005 : Record 50;
      InvtSetup@1013 : Record 313;
      Calendar@1000000001 : Record 2000000007;
      NoOfPeriods@1006 : Integer;
      PeriodLength@1007 : DateFormula;
      FiscalYearStartDate@1008 : Date;
      FiscalYearStartDate2@1015 : Date;
      FirstPeriodStartDate@1009 : Date;
      LastPeriodStartDate@1010 : Date;
      FirstPeriodLocked@1011 : Boolean;
      FourFourFive@1000000000 : Boolean INDATASET;
      i@1012 : Integer;

    PROCEDURE InitializeRequest@1(NewNoOfPeriods@1000 : Integer;NewPeriodLength@1001 : DateFormula;StartingDate@1002 : Date);
    BEGIN
      NoOfPeriods := NewNoOfPeriods;
      PeriodLength := NewPeriodLength;
      IF AccountingPeriod.FINDLAST THEN
        FiscalYearStartDate := AccountingPeriod."Starting Date"
      ELSE
        FiscalYearStartDate := StartingDate;
    END;

    BEGIN
    END.
  }
  RDLDATA
  {
  }
}

